package com.cskaoyan.bean;

/**
 * @description 这是前后端分离，json数据一个常用的格式
 * @date        2022.04.06 10:06
 * @package     com.cskaoyan.bean.param 
 * @Classname   BaseRespVo
 * @author      rebaogu
 */
public class BaseRespVo<T> {
    T data;
    String errmsg;//告诉前端请求的消息
    long errno;//自己的前后端应用 ： 自定义的状态码 → 通常前端根据该状态码做不同的处理

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getErrmsg() {
        return errmsg;
    }

    public void setErrmsg(String errmsg) {
        this.errmsg = errmsg;
    }

    public long getErrno() {
        return errno;
    }

    public void setErrno(long errno) {
        this.errno = errno;
    }

    // 返回成功
    public static BaseRespVo ok(){
        BaseRespVo<Object> baseRespVo = new BaseRespVo<>();
        baseRespVo.setErrno(0);
        baseRespVo.setErrmsg("成功");
        return baseRespVo;
    }
    // 只带数据
    public static <T> BaseRespVo ok(T data){
        BaseRespVo<Object> baseRespVo = new BaseRespVo<>();
        baseRespVo.setData(data);
        baseRespVo.setErrno(0);
        baseRespVo.setErrmsg("成功");
        return baseRespVo;
    }
    // 带数据与信息
    public static <T> BaseRespVo ok(T data, String msg){
        BaseRespVo<Object> baseRespVo = new BaseRespVo<>();
        baseRespVo.setData(data);
        baseRespVo.setErrno(0);
        baseRespVo.setErrmsg(msg);
        return baseRespVo;
    }
    // 返回只有失败
    public static <T> BaseRespVo fail(){
        BaseRespVo<Object> baseRespVo = new BaseRespVo<>();
        baseRespVo.setErrno(10000);
        baseRespVo.setErrmsg("失败");
        return baseRespVo;
    }

    // 失败，返回带code带信息
    public static <T> BaseRespVo fail(Integer code , String msg){
        BaseRespVo<Object> baseRespVo = new BaseRespVo<>(msg,code);
        /*baseRespVo.setErrno(code);
        baseRespVo.setMsg(msg);*/
        return baseRespVo;
    }

    // 失败，传入code，code只能是501、502、503、504、505、506，具体情况根据前端代码中的request.js对应
    public static <T> BaseRespVo fail(Integer code){
        BaseRespVo<Object> baseRespVo = new BaseRespVo<>();
        baseRespVo.setErrno(code);
        return baseRespVo;
    }

    public BaseRespVo(String msg, long errno) {
        this.errmsg = msg;
        this.errno = errno;
    }

    public BaseRespVo() {
    }
}

